

;
(function($, window, document, undefined) {
	
	var	aCG = [], //科目数组
		aClassroom = [], //教室数组
		aShowData = [],//回显的数据
		aClass = [], //班级数组
		aClassGroupSatff = [],//科组教职工综合表
		nNode;//节次
	$.extend({
		//初始化DOM
		initPage: function() {
			//获取年级列表
			$.getGradeList();	
			
			//获取学校节课时
			$.getNode();
			
//			//获取科目表
			$.getClassGroupList();
			
			

			
			//监听年级列表change事件
			$.GradeListEvent();
			
			//监听保存设置入口
			$.savePort();
			
			//监听所有下拉框设置select
			$.allSelectChangeEvent();
			
			
		},
		//获取学校节次,重新定义周和节之间的关系
		getNode: function() {
			fnAjax.method_4(
				url_join("schedule-v1/session"), {},
				"post",
				function(data) {
					console.log(data);
					if(data.data == 0){
						layer.alert("该学校还没配置课时的考勤时间，请在系统设置》考勤时间设置》课时设置 ，进行配置");	
						$("table").hide();
					}else{
						nNode = data.data;
						//非走班，重新定义周和节之间的关系
						$.nogoClass_node(nNode);
					}
					
					
				}
			);
		},
		//非走班，重新定义周和节之间的关系
		nogoClass_node:function(num){
			var totalNode = num * 5;
			var ths = "";
			for(var i = 1; i <= totalNode; i++) {
				ths += '<th class="week-node" data-node="' + resetNum(i) + '" data-week="' + Math.ceil(i / num) + '">' + resetNum(i) + '节</th>';
			}
			$(".node-tr").append($(ths));

			function resetNum(n) {
				if(n > num) {
					if(Math.ceil(n % num) == 0) {
						return num;
					}
					return Math.ceil(n % num);
				} else {
					return n;
				}
			}
			$(".nogoClass .week-th").attr("colspan",num);
			
			
			
		},
		
		
		/*
		 返回列表，渲染为下拉菜单
		 @param aData {array} 列表数据
		 @param container {object} 下拉菜单select元素对象界节点  jq
		 * */		
		getSelectList: function(aData, container) {
			container.find("option.mainOption").remove();
			$.each(aData, function(i, v) {
				var sOption = '<option value="' + v.id + '" class="mainOption">' + v.name + '</option>';
				container.append($(sOption));
			});
		},

		//获取年级列表
		getGradeList: function() {
			fnAjax.method_4(
				url_join("grade/list"), {},
				"post",
				function(data) {
					console.log(data);
					if(data.data.length > 0){
						$("#grade").find("option").remove();
						$.each(data.data, function(i, v) {
							if(v.type == 0){
								var sOption = '<option value="' + v.id + '" data-type="' + v.type + '">' + v.name + '</option>';
								$("#grade").append($(sOption));
							}
							
						});
	
						$("#grade").find("option:selected").attr("selected", "selected");
						
						if($("#grade option").length > 0){
							//初始化课程表
							$.initTable();
						}else{
							layer.alert("该年级还没有初始化非走班制年级数据，请到“资料管理》学校内部架构管理》年级列表” 模块，创建非走班制年级数据！");
						}
						
					}
					else{
						layer.alert("该年级还没有初始化年级数据，请到“资料管理》学校内部架构管理》年级列表” 模块，创建年级数据！");
					}
					
					
					
				}
			);
		},
		//监听年级列表change事件
		GradeListEvent: function() {
			$("#grade").on("change", function() {
				//初始化课程表
				$.initTable();
			});
		},
		//获取科目表
		getClassGroupList: function() {
			fnAjax.method_4(
				url_join("class-group/list"), {},
				"post",
				function(data) {
					console.log(data);
					if(data.data.length == 0){
						layer.alert("该学校还没初始化选修科组数据，请到“资料管理》学校内部架构管理》科组列表” 模块，创建科组数据！");
					}else{
						aCG = data.data;
					}
				}
			);
		},

		//获取班级
		getClassList: function(nGrade) {
			if($("#grade").find("option").length == 0){
				layer.alert("该学校还没初始化选修年级数据，请到“资料管理》学校内部架构管理》年级列表” 模块，创建年级数据！");
				return false;
			}
			fnAjax.method_4(
				url_join("class/list"), {
					grade_id: nGrade
				},
				"post",
				function(data) {
					console.log(data);
					if(data.data.length == 0){
						layer.alert("该学校还没初始化选修班级数据，请到“资料管理》学校内部架构管理》班级列表” 模块，创建班级数据！");
					}else{
						aClass = data.data;
						$.createClassTable(aClass, $("#curriculum tbody"));
					}
					
				}
			);
		},
		//初始化列表，判断初始化的年级是否走班,加载对应种类表
		initTable: function() {
			
			$(".tableBox2").hide();
			$(".tableBox").show();
			$.getClassList($("#grade").val());
			
		},
		/*
		 渲染表格科目行列
		 @param {array} aClassGroup 科目数组
		 @param {object} container 走位表的tbod DOM对象 jq
		 * */
		createClassGroupTable: function(aClassGroup, container) {
			if(aClassGroup != undefined){
				console.log(aClassGroup);
			layerLoad = layer.load(3);	
			container.find("tr").remove();
			//科目的长度
			var tbody_tr_length = aClassGroup.length;
			//老师的行个数
			var tbody_td_length = ($("#curriculum .node-tr th").length) - 1;
			var tds = ""
			for(var j = 0; j < tbody_td_length; j++) {
				tds += '<td class="teacher-td"><select class="teacherList form-control" style="width:100px"></select></td>';
			}

			var trs = "";
			for(var i = 0; i < tbody_tr_length; i++) {
				trs += '<tr><td class="classGroup-td" data-id="' + aClassGroup[i].id + '" data-type="' + aClassGroup[i].type + '">' + aClassGroup[i].name + '</td>' + tds + '</tr>';
			}
			container.html(trs);
			$.getTeacherList($(".teacherList"));
			setTimeout(function() {
				$(".teacher-td").each(function() {
					$(this).attr({
						"data-week": $(".node-tr th").eq($(this).index()).attr("data-week"), //周几标示
						"data-node": $(".node-tr th").eq($(this).index()).attr("data-node"), //节课时标示
						"data-class-group-id": $(this).siblings(".classGroup-td").attr("data-id") //科目id
					});
				});
				//查看课程表数据
				$.showTable();
				layer.close(layerLoad);
			}, 500);
			}
			
		},
		/*
		 获取教职工人员表
		 @param {object} oSelect 老师列表对象 DOM jq
		 * */
		getTeacherList: function(oSelect) {
			fnAjax.method_4(
				url_join("course/staff"), {},
				"post",
				function(data) {
					console.log(data);
					oSelect.each(function() {
						$.createMulSelect(data.data, $(this));
					});
				}
			);
		},
		/*
		 渲染多功能下拉菜单
		@data {array} 主要数据
		@param container {object} 下拉菜单select元素对象界节点  jq
		 * */
		createMulSelect: function(data, container) {
			container.html("");
			$.each(data, function(i, v) {
				var optgroup = '<optgroup label="' + v.name + '"  data-id="' + v.id + '">' +
					createOption(v.staff) +
					'</optgroup>';
				container.append($(optgroup));
			});

			/*
			 创建option
			 @param {array} arr staff数组
			 @return {string} 
			 * */
			function createOption(arr) {
				var options = "";
				$.each(arr, function(k, e) {
					options += '<option value="' + e.id + '" style="font-weight: normal;color: blue;">' + e.username + '</option>';
				});
				return options;
			}
		},

		/*
		 渲染表格班级行列（非走班）
		 @param {array} aClassGroup 班级数组
		 @param {object} container 走位表的tbod DOM对象 jq
		 * */
		createClassTable: function(aClassGroup, container) {
			container.find("tr").remove();
			//班级的长度
			var tbody_tr_length = aClassGroup.length;
			//科目的行个数
			var tbody_td_length = ($("#curriculum .node-tr th").length) - 1;
			var tds = ""
			for(var j = 0; j < tbody_td_length; j++) {
				tds += '<td class="kemu-td"><select class="kemuList form-control" style="width:100px"><option value="0">请选择科组</option></select></td>';
			}

			var trs = "";
			for(var i = 0; i < tbody_tr_length; i++) {
				trs += '<tr><td class="class-td" data-id="' + aClassGroup[i].id + '">' +
					'<span>' + aClassGroup[i].name + '班</span>' +
					'</td>' +
					tds + '</tr>';
			}
			container.html(trs);
			setTimeout(function() {
				$(".kemuList").each(function() {
					$.getSelectList(aCG, $(this));
				});
				$(".kemu-td").each(function() {
					$(this).attr({
						"data-week": $(".node-tr th").eq($(this).index()).attr("data-week"), //周几标示
						"data-node": $(".node-tr th").eq($(this).index()).attr("data-node"), //节课时标示
						"data-class-id": $(this).siblings(".class-td").attr("data-id") //班级id
					});
				});
				
				//查看课程表数据
				$.showTable();
			}, 200);
		},
		
		//查询,显示课程表
		showTable: function() {
			//非走班
			fnAjax.method_4(
				url_join("schedule-v1/show"), 
				{
					gid:$("#grade").val()	
				},
				"post",
				function(data) {
					console.log(data);
					if(data.data.length > 0){
						$(".btn-save").attr("data-type","update");
						//回显主数据
						$.back_data_table(data.data,$(".kemu-td"));
						
						//监听科目下拉框切换修改值
						$.classGroupSelectEvent();
					}else{
						$(".btn-save").attr("data-type","create");
					}
				
				}
			);
		},
		/**
		 * 回显主数据
		 * @param {Array} aData 主要回显数据
		 * @param {Object} container 主要单元格选择器
		 * */
		back_data_table:function(aData,container){
			$.each(aData, function(i,v) {
				container.each(function(){
					if(v.class_hour == $(this).attr("data-node") && v.day == $(this).attr("data-week") && v.classes_id == $(this).attr("data-class-id")){
						$(this).find("select").val(v.class_group_id);
						$(this).attr("data-id",v.id);
					}
				});
			});
		},
		//新增，更新入口
		savePort: function() {
			$(".btn-save").on("click", function() {
				if($(this).attr("data-type") == "create"){
					$.addNoGoClassTable();
				}else{
					$.editNoGoClassTable(aShowData);
				}
			
			});
		},
		//新增非走班表
		addNoGoClassTable: function() {
			$(".kemuList").each(function(){
				$(this).find("option:selected").attr("selected","selected");
			});
			//非走班表的数据模型
			var mainData = {
//				content:tem,//表格 的html片段
//				content:$(".tableBox").html(),//表格 的html片段
				gid: $("#grade").val(), //年级id
				schedule_v1 : [ //各个班级每周课程数据
					
				]
			};
			mainData.schedule_v1  = [];
			$.each(aClass, function(i, v) {
				mainData.schedule_v1 .push({
					"class_id": v.id,
					"dayList": {
						"monday": [],
						"tuesday": [],
						"wednesday": [],
						"thursday": [],
						"friday": []
					}
				})
			});
			
			$.each(mainData.schedule_v1 , function(i,v) {
				$(".kemu-td").each(function(k){
					if($(this).attr("data-class-id") == v.class_id){
						if($(this).attr("data-week") == "1"){
							v.dayList.monday.push({
								"node":$(this).attr("data-node"),
								"classGroupId":$(this).find("select").val()
							});
						}
						else if($(this).attr("data-week") == "2"){
							v.dayList.tuesday.push({
								"node":$(this).attr("data-node"),
								"classGroupId":$(this).find("select").val()
							})
						}
						else if($(this).attr("data-week") == "3"){
							v.dayList.wednesday.push({
								"node":$(this).attr("data-node"),
								"classGroupId":$(this).find("select").val()
							});
						}
						else if($(this).attr("data-week") == "4"){
							v.dayList.thursday.push({
								"node":$(this).attr("data-node"),
								"classGroupId":$(this).find("select").val()
							});
						}
						else if($(this).attr("data-week") == "5"){
							v.dayList.friday.push({
								"node":$(this).attr("data-node"),
								"classGroupId":$(this).find("select").val()
							});
						}
					}
				});
			});
			console.log(mainData.schedule_v1);
			/**
			 @request html {string} html片段
			 @request gid {number} 年级id
			 @schedule_v1 {[object]} 各个班级每周课程数据
			 * */
			fnAjax.method_4(
				url_join("schedule-v1/create"),
				mainData,
				"post",
				function(data){
					layer.msg("操作成功",{time:1500},function(){
						location.reload();
					});
				}
			);
		},		
		//查看回显非走班表数据
		backNoGoClassTable:function(data){
			console.log(data);
			$.each(data, function(i,v) {
				$(".class-td").each(function(k){
					if(v.class_id == $(this).attr("data-id")){
						dispose(v.dayList,$(this).siblings("td"));
					}
				})
			});
			function dispose(oData,container){
				s_s(oData.friday.list,container,"5");
				s_s(oData.thursday.list,container,"4");
				s_s(oData.wednesday.list,container,"3");
				s_s(oData.tuesday.list,container,"2");
				s_s(oData.monday.list,container,"1");
			}
			/**
			 @param {array} aData 每天的数据
			 @param {object} container 主要选择器
			 @param {number} nDataWeek 周几
			 * */
			function s_s(aData,container,nDataWeek){
				$.each(aData, function(i,v) {
					container.each(function(){
						if(v.node == $(this).attr("data-node") && $(this).attr("data-week") == nDataWeek){
							$(this).find("select").val(v.classGroupId);
						}
					});
				});
			}
		},
		/**
		 更新非走班表
		 @param {array} aData 后台数据
		 * */
		editNoGoClassTable:function(aData){
		
			var aChange = [];
			$(".changeTd").each(function(){
				aChange.push({
					"data_week":$(this).attr("data-week"),
					"node":$(this).attr("data-node"),
					"class_id":$(this).attr("data-class-id"),
					"classGroupId":$(this).find("select").val()
				});
			});	
			var aChange2 = $.getSameVal(aChange, "class_id");
			var aChange3 = [];
			$.each(aChange2, function(i,v) {
				aChange3.push({
					"class_id":v[0].class_id,
					"dayList":{
						"monday": [],
						"tuesday": [],
						"wednesday": [],
						"thursday": [],
						"friday": []
					}
				})
			});
			
			$.each(aChange3, function(i,v) {
				$(".changeTd").each(function(){
					if(v.class_id == $(this).attr("data-class-id") && $(this).attr("data-week") == "1"){
						v.dayList.monday.push({
							"node":$(this).attr("data-node"),
							"classGroupId":$(this).find("select").val()
						});
						v.id = $(this).attr("data-id");
					}
					if(v.class_id == $(this).attr("data-class-id") && $(this).attr("data-week") == "2"){
						v.dayList.tuesday.push({
							"node":$(this).attr("data-node"),
							"classGroupId":$(this).find("select").val()
						});
						v.id = $(this).attr("data-id");
					}
					if(v.class_id == $(this).attr("data-class-id") && $(this).attr("data-week") == "3"){
						v.dayList.wednesday.push({
							"node":$(this).attr("data-node"),
							"classGroupId":$(this).find("select").val()
						});
						v.id = $(this).attr("data-id");
					}
					if(v.class_id == $(this).attr("data-class-id") && $(this).attr("data-week") == "4"){
						v.dayList.thursday.push({
							"node":$(this).attr("data-node"),
							"classGroupId":$(this).find("select").val()
						});
						v.id = $(this).attr("data-id");
					}
					if(v.class_id == $(this).attr("data-class-id") && $(this).attr("data-week") == "5"){
						v.dayList.friday.push({
							"node":$(this).attr("data-node"),
							"classGroupId":$(this).find("select").val()
						});
						v.id = $(this).attr("data-id");
					}
					
				});
			});
			console.log(aChange3);
		
			fnAjax.method_4(
				url_join("schedule-v1/update"),
				{
//					content:$(".tableBox").html(),//表格 的html片段
					gid: $("#grade").val(), //年级id
					schedule_v1 : aChange3
				},
				"post",
				function(data){
					layer.msg("操作成功",{time:1500},function(){
						location.reload();
					});
				}
				
			);
		
		},
		//监听科目下拉框
		classGroupSelectEvent:function(){
			$(".kemuList").each(function(){
				$(this).attr("data-init",$(this).val());
			});
			$("body").on("change",".kemuList",function(){
				$(this).find("option:selected").attr("selected","selected");
				if($(this).find("option:selected").attr("value") == $(this).attr("data-init")){
					$(this).parent("td").removeClass("changeTd");
				}else{
					$(this).parent("td").addClass("changeTd");
				}
			});
		},
		//监听所有下拉框change事件
		allSelectChangeEvent:function(){
			$("body").on("change","select",function(){
				$(this).find("option:selected").attr("selected","selected").siblings("option").removeAttr("selected");
			});
		},
		
	});
})(jQuery, window, document);